package com.tidy.seed.admin.system.vo.file.upload;

import lombok.Data;

import java.io.File;
import java.nio.file.Files;
import java.nio.file.attribute.BasicFileAttributes;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 目录文件信息模型（用于目录查询）
 */
@Data
public class FileInfoVO {
    private String name;          // 名称
    private String path;          // 相对路径
    private String fullPath;      // 绝对路径
    private String accessPath;    // 访问路径
    private boolean isDirectory;  // 是否为文件夹
    private long size;            // 大小（字节）
    private long lastModified;    // 最后修改时间
    //    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private String createAt;

    // 构建方法
    public static FileInfoVO build(File file, String rootPath, String accessPath) throws Exception {
        FileInfoVO info = new FileInfoVO();
        BasicFileAttributes basicFileAttributes = Files.readAttributes(file.toPath(), BasicFileAttributes.class);
        System.err.println();
        info.setName(file.getName());
        info.setFullPath(file.getAbsolutePath());
        info.setPath(file.getAbsolutePath().replace(rootPath, "").replace("\\", "/"));
        if (!file.isDirectory()) info.setAccessPath(accessPath);
        info.setDirectory(basicFileAttributes.isDirectory());
        info.setSize(basicFileAttributes.isRegularFile() ? basicFileAttributes.size() : 0);
        info.setLastModified(basicFileAttributes.lastModifiedTime().toMillis());
        // ✅ 格式化创建时间
        info.setCreateAt(
                new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
                        .format(new Date(basicFileAttributes.creationTime().toMillis()))
        );
        return info;
    }
}